+Mon Jul 2 01:09:37 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkwindow-x11.c
+ gdk/linux-fb/gdkwindow-fb.c gdk/x11/gdkwindow-x11.c gdk/gdk:
+ Add gdk_set_pointer_hooks() to allow pointer-querying to
+ be hooked by an event record/playback system like GERD.
+ (#56914)
+
Thu Jul 5 08:57:07 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_reset_rc_style): Pass
+Mon Jul 2 01:09:37 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkwindow-x11.c
+ gdk/linux-fb/gdkwindow-fb.c gdk/x11/gdkwindow-x11.c gdk/gdk:
+ Add gdk_set_pointer_hooks() to allow pointer-querying to
+ be hooked by an event record/playback system like GERD.
+ (#56914)
+
Thu Jul 5 08:57:07 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_reset_rc_style): Pass
+Mon Jul 2 01:09:37 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkwindow-x11.c
+ gdk/linux-fb/gdkwindow-fb.c gdk/x11/gdkwindow-x11.c gdk/gdk:
+ Add gdk_set_pointer_hooks() to allow pointer-querying to
+ be hooked by an event record/playback system like GERD.
+ (#56914)
+
Thu Jul 5 08:57:07 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_reset_rc_style): Pass
+Mon Jul 2 01:09:37 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkwindow-x11.c
+ gdk/linux-fb/gdkwindow-fb.c gdk/x11/gdkwindow-x11.c gdk/gdk:
+ Add gdk_set_pointer_hooks() to allow pointer-querying to
+ be hooked by an event record/playback system like GERD.
+ (#56914)
+
Thu Jul 5 08:57:07 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_reset_rc_style): Pass
+Mon Jul 2 01:09:37 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkwindow-x11.c
+ gdk/linux-fb/gdkwindow-fb.c gdk/x11/gdkwindow-x11.c gdk/gdk:
+ Add gdk_set_pointer_hooks() to allow pointer-querying to
+ be hooked by an event record/playback system like GERD.
+ (#56914)
+
Thu Jul 5 08:57:07 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_reset_rc_style): Pass
+Mon Jul 2 01:09:37 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkwindow-x11.c
+ gdk/linux-fb/gdkwindow-fb.c gdk/x11/gdkwindow-x11.c gdk/gdk:
+ Add gdk_set_pointer_hooks() to allow pointer-querying to
+ be hooked by an event record/playback system like GERD.
+ (#56914)
+
Thu Jul 5 08:57:07 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_reset_rc_style): Pass
+Mon Jul 2 01:09:37 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkwindow-x11.c
+ gdk/linux-fb/gdkwindow-fb.c gdk/x11/gdkwindow-x11.c gdk/gdk:
+ Add gdk_set_pointer_hooks() to allow pointer-querying to
+ be hooked by an event record/playback system like GERD.
+ (#56914)
+
Thu Jul 5 08:57:07 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_reset_rc_style): Pass
gint width,
gint height);
+GdkWindow* _gdk_windowing_window_at_pointer (gint *win_x,
+ gint *win_y);
+GdkWindow* _gdk_windowing_window_get_pointer (GdkWindow *window,
+ gint *x,
+ gint *y,
+ GdkModifierType *mask);
+
#define GDK_WINDOW_IS_MAPPED(window) ((((GdkWindowObject*)window)->state & GDK_WINDOW_STATE_WITHDRAWN) == 0)
/* Called before processing updates for a window. This gives the windowing
gint x_offset;
gint y_offset;
};
+
+static const GdkPointerHooks default_pointer_hooks = {
+ _gdk_windowing_window_get_pointer,
+ _gdk_windowing_window_at_pointer
+};
+
+const GdkPointerHooks *current_pointer_hooks = &default_pointer_hooks;
+
static GdkGC *gdk_window_create_gc (GdkDrawable *drawable,
GdkGCValues *values,
GdkGCValuesMask mask);
*new_width = width;
*new_height = height;
}
+
+/**
+ * gdk_set_pointer_hooks:
+ * @new_hooks: a table of pointer to functions for getting
+ * quantities related to the current pointer position,
+ * or %NULL to restore the default table.
+ *
+ * This function allows for hooking into the operation
+ * of getting the current location of the pointer. This
+ * is only useful for such low-level tools as an
+ * event recorder. Applications should never have any
+ * reason to use this facility
+ *
+ * Return value: the previous pointer hook table
+ **/
+GdkPointerHooks *
+gdk_set_pointer_hooks (const GdkPointerHooks *new_hooks)
+{
+ const GdkPointerHooks *result = current_pointer_hooks;
+
+ if (new_hooks)
+ current_pointer_hooks = new_hooks;
+ else
+ current_pointer_hooks = &default_pointer_hooks;
+
+ return (GdkPointerHooks *)result;
+}
+
+GdkWindow*
+gdk_window_get_pointer (GdkWindow *window,
+ gint *x,
+ gint *y,
+ GdkModifierType *mask)
+{
+ g_return_val_if_fail (window == NULL || GDK_IS_WINDOW (window), NULL);
+
+ return current_pointer_hooks->get_pointer (window, x, y, mask);
+}
+
+GdkWindow*
+gdk_window_at_pointer (gint *win_x,
+ gint *win_y)
+{
+ return current_pointer_hooks->window_at_pointer (win_x, win_y);
+}
typedef struct _GdkGeometry GdkGeometry;
typedef struct _GdkWindowAttr GdkWindowAttr;
+typedef struct _GdkPointerHooks GdkPointerHooks;
/* Classes of windows.
* InputOutput: Almost every window should be of this type. Such windows
GdkGravity win_gravity;
};
+struct _GdkPointerHooks
+{
+ GdkWindow* (*get_pointer) (GdkWindow *window,
+ gint *x,
+ gint *y,
+ GdkModifierType *mask);
+ GdkWindow* (*window_at_pointer) (gint *win_x,
+ gint *win_y);
+};
+
typedef struct _GdkWindowObject GdkWindowObject;
typedef struct _GdkWindowObjectClass GdkWindowObjectClass;
gint *new_width,
gint *new_height);
+GdkPointerHooks *gdk_set_pointer_hooks (const GdkPointerHooks *new_hooks);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
}
GdkWindow *
-gdk_window_get_pointer (GdkWindow *window,
- gint *x,
- gint *y,
- GdkModifierType *mask)
+_gdk_windowing_window_get_pointer (GdkWindow *window,
+ gint *x,
+ gint *y,
+ GdkModifierType *mask)
{
GdkWindow *return_val;
int winx = 0;
}
GdkWindow*
-gdk_window_at_pointer (gint *win_x,
- gint *win_y)
+_gdk_windowing_window_at_pointer (gint *win_x,
+ gint *win_y)
{
gint rx, ry;
GdkWindow *retval = gdk_window_get_pointer (NULL, win_x, win_y, NULL);
}
GdkWindow*
-gdk_window_get_pointer (GdkWindow *window,
- gint *x,
- gint *y,
- GdkModifierType *mask)
+_gdk_windowing_window_get_pointer (GdkWindow *window,
+ gint *x,
+ gint *y,
+ GdkModifierType *mask)
{
GdkWindow *return_val;
POINT pointc, point;
}
GdkWindow*
-gdk_window_at_pointer (gint *win_x,
- gint *win_y)
+_gdk_windowing_window_at_pointer (gint *win_x,
+ gint *win_y)
{
GdkWindow *window;
POINT point, pointc;
return;
/* XXX: isn't all this default on win32 ... */
-}
\ No newline at end of file
+}
}
GdkWindow*
-gdk_window_get_pointer (GdkWindow *window,
- gint *x,
- gint *y,
- GdkModifierType *mask)
+_gdk_windowing_window_get_pointer (GdkWindow *window,
+ gint *x,
+ gint *y,
+ GdkModifierType *mask)
{
GdkWindow *return_val;
Window root;
}
GdkWindow*
-gdk_window_at_pointer (gint *win_x,
- gint *win_y)
+_gdk_windowing_window_at_pointer (gint *win_x,
+ gint *win_y)
{
GdkWindow *window;
Window root;